<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * Created by PhpStorm.
 * The project “dev”
 * File name “index.php”
 *
 * User: znx
 * Company: 思议创想
 * Q  Q: 865303386
 * Site: www.siyi360.com
 *
 * Date: 2017-02-08
 * Time: 17:20
 */

class System extends MY_Controller {
    public function __construct()
    {
        parent::__construct();

        $this->load->model('system/Setting_model');
        $this->load->model('system/Menu_model');
        $this->load->model('system/Acl_model');
        $this->load->model('system/Role_model');
        $this->load->model('system/User_model');
    }

    /**
     * sys_config
     * 系统设置
     *
     * @param string $r 访问请求转向
     */
    public function setting($r='')
    {
        switch ($r)
        {
            case 'update':
                if (IS_POST) {
                    $return = $this->Setting_model->setting_update();
                    exit(json_encode($return));
                }
                break;
            default:
                $this->load->view('admin/system/setting');
        }
    }

    /**
     * menu_list
     * 系统菜单 列表
     */
    public function menu_list()
    {
        $query = $this->Menu_model->menu_get();
        $data['menu'] = tree($query);

        $this->load->view('admin/system/menu_list', $data);
    }

    /**
     * menu_add
     * 系统菜单 新增（表单+数据库操作）
     *
     * @param string $r 访问请求转向
     */
    public function menu_add($r='')
    {
        switch ($r)
        {
            case 'add':
                if (IS_POST) {
                    $return = $this->Menu_model->menu_insert();
                    exit(json_encode($return));
                }
                break;
            default:
                $query = $this->Menu_model->menu_get();
                $data['menu_parent'] = tree($query);

                $this->load->view('admin/system/menu_add', $data);
        }
    }

    /**
     * menu_edit
     * 系统菜单 编辑（表单+数据库操作）
     *
     * @param int $menu_id 菜单id
     * @param string $r 访问请求转向
     * @param string $menu_id $u=update时，父级菜单id与菜单id拼接的字符串，格式parentId_Id
     */
    public function menu_edit($menu_id, $r='')
    {
        switch ($r)
        {
            case 'update':
                if (IS_POST) {
                    $return = $this->Menu_model->menu_update($menu_id);
                    exit(json_encode($return));
                }
                break;
            default:
                $query = $this->Menu_model->menu_get();
                $data['menu_parent'] = tree($query);

                $data['menu_val'] = $this->Menu_model->menu_get($menu_id)[0];

                $this->load->view('admin/system/menu_edit', $data);
        }
    }

    /**
     * menu_del
     * 系统菜单 删除
     *
     * @param int $menu_id 菜单id
     */
    public function menu_del($menu_id)
    {
        $return = $this->Menu_model->menu_delete($menu_id);
        exit(json_encode($return));
    }

    /**
     * acl_list
     * 权限资源列表
     */
    public function acl_list()
    {
        $data['acl'] = $this->Acl_model->acl_get();

        $this->load->view('system/acl_list', $data);
    }

    /**
     * acl_add
     * 新增权限资源
     */
    public function acl_add()
    {
        $data['menu_parent'] = $this->Acl_model->menu_parent_get();

        //取得所有控制器
        $data['controller'] = getAllController();

        $this->load->view('system/acl_add', $data);
    }

    /**
     * acl_edit
     * 编辑权限资源
     *
     * @param int $acl_id 权限资源id
     */
    public function acl_edit($acl_id)
    {
        $data['menu_parent'] = $this->Acl_model->menu_parent_get();

        $data['acl'] = $this->Acl_model->acl_get($acl_id)[0];

        //取得所有控制器
        $data['controller'] = getAllController();

        $this->load->view('system/acl_edit', $data);
    }

    /**
     * acl_save
     * 保存权限资源
     */
    public function acl_save()
    {
        if (!IS_POST) exit();

        $return = $this->Acl_model->acl_save();
        exit(json_encode($return));
    }

    /**
     * acl_del
     * 删除权限资源
     */
    public function acl_del()
    {
        $return = $this->Acl_model->acl_delete();
        exit(json_encode($return));
    }

    /**
     * role_list
     * 系统角色 列表
     */
    public function role_list()
    {
        $data['role'] = $this->Role_model->role_get();

        $this->load->view('admin/system/role_list', $data);
    }

    /**
     * role_add
     * 权限资源 新增（表单+数据库操作）
     *
     * @param string $r 访问请求转向
     */
    public function role_add($r='')
    {
        switch ($r)
        {
            case 'add':
                if (IS_POST) {
                    $return = $this->Role_model->role_insert();
                    exit(json_encode($return));
                }
                break;
            default:
                //获取权限分组
                $data['acl_group'] = $this->Role_model->menu_parent_get();

                $this->load->view('admin/system/role_add', $data);
        }
    }

    /**
     * role_edit
     * 系统角色 编辑（表单+数据库操作）
     *
     * @param int $role_id 角色id
     * @param string $r 访问请求转向
     */
    public function role_edit($role_id, $r='')
    {
        switch ($r)
        {
            case 'update':
                if (IS_POST) {
                    $return = $this->Role_model->role_update($role_id);
                    exit(json_encode($return));
                }
                break;
            default:
                //获取权限分组
                $data['acl_group'] = $this->Role_model->menu_parent_get();

                $data['role_val'] = $this->Role_model->role_get($role_id)[0];

                //如果请求编辑的是系统保留角色则立即停止操作并返回列表
                if ($data['role_val']['role_acl']=='all') {
                    redirect(site_url('System/role_list'));
                    exit();
                }

                $this->load->view('admin/system/role_edit', $data);
        }
    }

    /**
     * role_del
     * 系统角色 删除
     *
     * @param int $role_id 角色id
     */
    public function role_del($role_id)
    {
        $return = $this->Role_model->role_delete($role_id);
        exit(json_encode($return));
    }

    /**
     * user_list
     * 系统用户 列表
     */
    public function user_list()
    {
        $data['user'] = $this->User_model->user_get();

        $this->load->view('admin/system/user_list', $data);
    }

    /**
     * user_add
     * 系统用户 新增（表单+数据库操作）
     *
     * @param string $r 访问请求转向
     */
    public function user_add($r='')
    {
        switch ($r)
        {
            case 'add':
                if (IS_POST) {
                    $return = $this->User_model->user_insert();
                    exit(json_encode($return));
                }
                break;
            default:
                //获取系统角色
                $data['role_list'] = $this->User_model->role_list_get();

                $this->load->view('admin/system/user_add', $data);
        }
    }

    /**
     * user_edit
     * 系统用户 编辑（表单+数据库操作）
     *
     * @param int $user_id 角色id
     * @param string $r 访问请求转向
     */
    public function user_edit($user_id, $r='')
    {
        switch ($r)
        {
            case 'update':
                if (IS_POST) {
                    $return = $this->User_model->user_update($user_id);
                    exit(json_encode($return));
                }
                break;
            default:
                //获取系统角色
                $data['role_list'] = $this->User_model->role_list_get();

                $data['user_val'] = $this->User_model->user_get($user_id)[0];

                $this->load->view('admin/system/user_edit', $data);
        }
    }

    /**
     * user_del
     * 系统用户 删除
     *
     * @param int $user_id 用户id
     */
    public function user_del($user_id)
    {
        $return = $this->User_model->user_delete($user_id);
        exit(json_encode($return));
    }
}